/**
 * 自动校正数字输入框
 * @param inputValue 输入值
 * @param bitsAfterDot 小数点后最多允许的位数，默认2位
 * @param allowNegative 是否允许输入负数，默认否
 *
 * 使用时@change Number(value)
 */
export default function autoFixedDicimal(inputValue, bitsAfterDot = 2, allowNegative = false) {
  // 处理参数的默认值
  if (bitsAfterDot == null || bitsAfterDot == undefined) bitsAfterDot = 2
  allowNegative = allowNegative || false
  // 自动校正输入的数字decimal
  let value = inputValue
  //没有小数点
  if (bitsAfterDot === 0) {
    value = inputValue.replace(/\./g, '')
  }
  // 先处理符号问题（负数）
  let mark = ''
  if (/^-/.test(value)) {
    mark = '-'
  }
  // 第一位不能是0
  // if (value.length > 1) {
  //   value = value[0] == 0 ? value.slice(1) : value
  // }
  // 如果输入非数字，则替换为''
  value = value.replace(/[^\d\.]/g, '')
  // 必须保证开头为数字而不是小数点.
  value = value.replace(/^\./g, '')
  // 保证小数点.最多出现一次
  value = value.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
  // 只能输入两位小数
  const reg = new RegExp(`^(\\-)*([\\d]{0,10})\\.([\\d]{0,${bitsAfterDot}}).*$`)
  value = value.replace(reg, '$1$2.$3')
  value = allowNegative ? mark + value : value
  // Number(value)
  return value
}
